package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

public class StudentDao {
    //定义一个学生类型的数组，长度为5，未来这个数组容器可以容纳5个学生对象
    private static Student[] stus = new Student[5];

    //添加学生
    public boolean addStudent(Student stu) {
        //标记位思想：先假设数组容器已经装不下了，没有索引位置能存储元素，让index的初始值为-1
        int index = -1;
        //遍历数组
        for (int i = 0; i < stus.length; i++) {
            if (stus[i] == null) {
                index = i;//修改index，记录当前元素的索引位置
                break;
            }
        }
        //根据index的值就能明确本次添加是否成功
        if (index == -1) {
            return false;
        } else {
            stus[index] = stu;//将要添加的学生对象保存到stus数组容器的index对应的索引位置
            return true;
        }

    }

    //查询所有学生
    public Student[] findAllStudent() {
        return stus;
    }

    //删除学生
    public void deleteStudent(String delId) {
        //找到这个学号在数组中对应的学生对象的索引位置
        int index = getIndex(delId);
        //用null去覆盖该索引位置的元素即为删除
        stus[index] = null;
    }

    //修改学生
    public void  updateStudent(String updateId , Student newStu){
        //根据要修改的学号，找到对应的索引位置
        int index =getIndex(updateId);
        //将newStu去覆盖index索引位置的老学生信息
        stus[index] =newStu;
    }

    //根据学号查找学生对象在数组中的索引位置
    private int getIndex(String id) {
        //先假设要查找的学号不存在
        int index = -1;
        for (int i = 0; i < stus.length; i++) {
            Student stu = stus[i];
            if (stu != null && id != null && id.equals(stu.getId())) {
                index = i;
            }
        }
        return index;
    }

}


